När ett LiveObject infogas i Webbitorn kontrollerar Content Studio hurvida LiveObjektet har inställningsmöjligheter. Genom att förse LiveObjektet med inställningsmöjligheter kan redaktören konfigurera LiveObjektet enligt önskemål.
Customizable Live Objects delar mycket av syntaxen i de XML-öar som renderas när en AS-komponent infogas. Det kan därför vara enklast att skapa ramverket för ett LiveObjekt genom att definiera en AS-komponent med motsvarande parametrar. I ingressfältet för den definierade AS-komponenten framgår viktig information för det LiveObjekt som ska skapas.
I codebehind för LiveObjektet skall den publika propertyn CS_LiveObjectXML, ärvd från SiteBase, ges parameter-Xml:en som värde. I exemplet nedan antas dokument id vara 2304 och eftersom datat är ren Xml använder man naturligtvis en XmlWriter som skriver till en underliggande StringBuilder:
C#
partial class CS_default_2304 : ContentStudio.Site.SiteBase
{
//This is the constructor of the current page
protected CS_default_2304()
{
//Here you can run things in the constructor
}
// This will run on page load
protected void Page_Load(object sender, EventArgs e)
{
//Enter code here...
System.Text.StringBuilder sbu = new System.Text.StringBuilder();
System.Xml.XmlWriterSettings sett = new System.Xml.XmlWriterSettings();
sett.OmitXmlDeclaration = true;
using (System.Xml.XmlWriter Xw = System.Xml.XmlWriter.Create(sbu, sett))
{
const string NS = "http://www.teknikhuset.se/CS/datatypes";
Xw.WriteStartDocument();
Xw.WriteStartElement("CSROOT");
Xw.WriteAttributeString("xmlns", "cdt", null, NS);
//Write the component header info
Xw.WriteStartElement("CSSCRIPT");
Xw.WriteAttributeString("name", "MyLiveObject");
Xw.WriteAttributeString("description", "Description of the script goes here. " +
"This is a simple component that describes how to write " +
"inline server code for both C# and VB.Net.");
Xw.WriteAttributeString("version", "1.0");
Xw.WriteAttributeString("xhtmlsafe", "1");
Xw.WriteAttributeString("content", "inline");
Xw.WriteAttributeString("id", "");
Xw.WriteAttributeString("serverlanguage", "c#|vb");
//Write the parameters section element
Xw.WriteStartElement("PARAMETERS");
//Write a parameter
Xw.WriteStartElement("PARAMETER");
Xw.WriteAttributeString("size", NS, "");
Xw.WriteAttributeString("type", NS, "");
Xw.WriteAttributeString("name", NS, "MyParameter");
Xw.WriteAttributeString("description", NS, "Parameter description goes here.");
Xw.WriteAttributeString("value", NS, "This is the default value for this parameter");
Xw.WriteEndElement(); //PARAMETER
//More parameters goes here
//
//
//Close the open elements
Xw.WriteEndElement(); //PARAMETERS
Xw.WriteEndElement(); //CSSCRIPT
Xw.WriteEndElement(); //CSROOT
Xw.WriteEndDocument();
Xw.Flush();
}
//Set the value of the inherited property CS_LiveObjectXML
CS_LiveObjectXML = sbu.ToString();
}
}
Partial Class CS_default_2304
Inherits ContentStudio.Site.SiteBase
'This is the constructor of the current page
Protected Sub New()
'Here you can run things in the constructor
End Sub
' This will run on page load
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
'Enter code here...
Dim sbu As New System.Text.StringBuilder()
System.Xml.XmlWriterSettings sett = new System.Xml.XmlWriterSettings()
sett.OmitXmlDeclaration = True
Using Xw As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(sbu, sett)
Const NS As String = "http://www.teknikhuset.se/CS/datatypes"
Xw.WriteStartDocument()
Xw.WriteStartElement("CSROOT")
Xw.WriteAttributeString("xmlns", "cdt", Nothing, NS)
'Write the component header info
Xw.WriteStartElement("CSSCRIPT")
Xw.WriteAttributeString("name", "MyLiveObject")
Xw.WriteAttributeString("description", "Description of the script goes here. " _ &
"This is a simple component that describes how to write " _ &
"inline server code for both C# and VB.Net.")
Xw.WriteAttributeString("version", "1.0")
Xw.WriteAttributeString("xhtmlsafe", "1")
Xw.WriteAttributeString("content", "inline")
Xw.WriteAttributeString("id", "")
Xw.WriteAttributeString("serverlanguage", "c#|vb")
'Write the parameters section element
Xw.WriteStartElement("PARAMETERS")
'Write a parameter
Xw.WriteStartElement("PARAMETER")
Xw.WriteAttributeString("size", NS, "")
Xw.WriteAttributeString("type", NS, "")
Xw.WriteAttributeString("name", NS, "MyParameter")
Xw.WriteAttributeString("description", NS, "Parameter description goes here.")
Xw.WriteAttributeString("value", NS, "This is the default value for this parameter")
Xw.WriteEndElement() 'PARAMETER
'More parameters goes here
'
'
'Close the open elements
Xw.WriteEndElement() 'PARAMETERS
Xw.WriteEndElement() 'CSSCRIPT
Xw.WriteEndElement() 'CSROOT
Xw.WriteEndDocument()
Xw.Flush();
End Using
'Set the value of the inherited property CS_LiveObjectXML
CS_LiveObjectXML = sbu.ToString()
End Sub
End Class
This will render the following xml document that now is accessible through the CS_LiveObjectXML property
Xml<CSROOT xmlns:cdt="http://www.teknikhuset.se/CS/datatypes">
<CSSCRIPT name="MyLiveObject"
description="Description of the script goes here.
This is a simple component that describes
how to write inline server code for both C# and VB.Net."
version="1.0"
xhtmlsafe="1"
content="inline"
id=""
serverlanguage="c#|vb">
<PARAMETERS>
<PARAMETER cdt:size=""
cdt:type=""
cdt:name="MyParameter"
cdt:description="Parameter description goes here."
cdt:value="This is the default value for this parameter"/>
</PARAMETERS>
</CSSCRIPT>
</CSROOT>
Programkod för ovanstående exempel:
C#<% Response.Write(CS_ReadLiveObjectParameterValue("MyParameter"));%>
<% Response.Write(CS_ReadLiveObjectParameterValue("MyParameter"))%>
För att i programkoden komma åt värdet för en viss parameter i LiveObjektet används alltså metoden CS_ReadLiveObjectParameterValue.
OBSERVERA! Attributet friendlyname får EJ ingå i attributet för LiveObjektet and was not included in the example above. Detta är en begränsning i den nuvarande versionen av Content Studio.